home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
- ### BEGIN INIT INFO
- # Provides: killprocs
- # Required-Start: $local_fs
- # Required-Stop:
- # Default-Start: 1
- # Default-Stop:
- # Short-Description: executed by init(8) upon entering runlevel 1 (single).
- ### END INIT INFO
-
- PATH=/sbin:/usr/sbin:/bin:/usr/bin
-
- . /lib/lsb/init-functions
-
- do_start () {
- # Kill all processes.
- log_action_begin_msg "Asking all remaining processes to terminate"
- killall5 -15 # SIGTERM
- log_action_end_msg 0
- alldead=""
- for seq in 1 2 3 4 5 6 7 8 9 10; do
- # use SIGCONT/signal 18 to check if there are
- # processes left. No need to check the exit code
- # value, because either killall5 work and it make
- # sense to wait for processes to die, or it fail and
- # there is nothing to wait for.
-
- if killall5 -18 ; then
- :
- else
- alldead=1
- break
- fi
-
- sleep 1
- done
- if [ -z "$alldead" ] ; then
- log_action_begin_msg "Killing all remaining processes"
- killall5 -9 # SIGKILL
- log_action_end_msg 1
- else
- log_action_begin_msg "All processes ended within $seq seconds."
- log_action_end_msg 0
- fi
- }
-
- case "$1" in
- start)
- do_start
- ;;
- restart|reload|force-reload)
- echo "Error: argument '$1' not supported" >&2
- exit 3
- ;;
- stop)
- # No-op
- ;;
- *)
- echo "Usage: $0 start|stop" >&2
- exit 3
- ;;
- esac
-